package com.somekim.mythread;

/**
 * 线程的随机性
 * @author zdl
 * @version v1.0
 * @date 2019/8/26
 */
public class MyThread2 extends Thread{

    @Override
    public void run() {

            try {
                for (int i = 0; i < 10; i++) {
                    int time = (int) (Math.random() * 1000);
                    Thread.sleep(time);
                    System.out.println("run=" + Thread.currentThread().getName());
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    }

    public static void main(String[] args) {
        try {
            MyThread2 thread = new MyThread2();
            thread.setName("myThread");
            /**
             * Thread.java 中的start（）方法通知“线程规划器”此线程已经准备就绪，
             * 等待调用线程对象的run（）方法。这个过程其实就是让系统安排一个时间
             * 来调用Thread中的run（）方法，也就是是线程得到运行，启动线程，具有
             * 异步执行的效果。如果调用代码thread.run（）就不是异步执行了，而是
             * 同步，那么此线程对象并不是交给“线程规划器”来进行处理，而是有main主
             * 线来调用run（）方法，也就是必须等run（）方法中的代码执行完后才可以
             * 执行后面的代码。
             */
            thread.start();
            //thread.run();
            for (int i = 0; i < 10; i++) {
                int time = (int) (Math.random() * 1000);
                Thread.sleep(time);
                System.out.println("main=" + Thread.currentThread().getName());
            }
        }catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
